Python3 的函数
在Python中,函数使用 def 关键字来声明。
1. 基本函数声明
最简单的函数
def say_hello():
    """这是一个简单的问候函数"""
    print("Hello, World!")
# 调用函数
say_hello()  # 输出: Hello, World!
带参数的函数
def greet(name):
    """带一个参数的函数"""
    print(f"Hello, {name}!")
# 调用函数
greet("Alice")      # 输出: Hello, Alice!
greet("Bob")        # 输出: Hello, Bob!
2. 不同类型的参数
位置参数
def introduce(name, age, city):
    """带多个位置参数的函数"""
    print(f"我叫{name},今年{age}岁,来自{city}")
# 调用时按顺序传递参数
introduce("张三", 25, "北京")
默认参数
def greet_person(name, greeting="Hello"):
    """带默认参数的函数"""
    print(f"{greeting}, {name}!")
# 调用方式
greet_person("Alice")              # 输出: Hello, Alice!
greet_person("Bob", "Hi")          # 输出: Hi, Bob!
greet_person("Charlie", greeting="Hey")  # 输出: Hey, Charlie!
关键字参数
def create_profile(name, age, city, country="中国"):
    """使用关键字参数"""
    print(f"姓名: {name}, 年龄: {age}, 城市: {city}, 国家: {country}")
# 调用时可以指定参数名,顺序可以改变
create_profile(age=25, city="上海", name="李四")
create_profile("王五", city="广州", age=30, country="中国")
3. 返回值
返回单个值
def add(a, b):
    """返回两个数的和"""
    return a + b
result = add(5, 3)
print(result)  # 输出: 8
返回多个值
def calculate(a, b):
    """返回多个值(实际上返回一个元组)"""
    sum_result = a + b
    difference = a - b
    product = a * b
    quotient = a / b if b != 0 else None
    return sum_result, difference, product, quotient
# 接收多个返回值
s, d, p, q = calculate(10, 5)
print(f"和: {s}, 差: {d}, 积: {p}, 商: {q}")
4. 各种函数示例
使用 *args 接收可变参数
def sum_all(*args):
    """计算任意数量数字的和"""
    total = 0
    for num in args:
        total += num
    return total
print(sum_all(1, 2, 3))        # 输出: 6
print(sum_all(1, 2, 3, 4, 5))  # 输出: 15
使用 **kwargs 接收关键字参数
def print_info(**kwargs):
    """打印任意关键字参数"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")
print_info(name="Alice", age=25, city="Beijing")
# 输出:
# name: Alice
# age: 25
# city: Beijing
5. 函数调用方式
直接调用
def multiply(x, y):
    return x * y
result = multiply(4, 5)
print(result)  # 输出: 20
嵌套调用
def square(x):
    return x * x
def sum_of_squares(a, b):
    return square(a) + square(b)
result = sum_of_squares(3, 4)
print(result)  # 输出: 25
作为参数传递
def apply_operation(x, y, operation):
    """将函数作为参数传递"""
    return operation(x, y)
def add(a, b):
    return a + b
def multiply(a, b):
    return a * b
print(apply_operation(5, 3, add))       # 输出: 8
print(apply_operation(5, 3, multiply))  # 输出: 15
6. Lambda函数(匿名函数)
# 简单的lambda函数
square = lambda x: x ** 2
print(square(5))  # 输出: 25
# 在排序中使用
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)  # 按分数排序
7. 实际应用示例
def calculate_bmi(weight, height):
    """
    计算BMI指数
    参数:
    weight -- 体重(kg)
    height -- 身高(m)
    返回:
    BMI值和健康状态
    """
    bmi = weight / (height ** 2)
    if bmi < 18.5:
        status = "偏瘦"
    elif bmi < 24:
        status = "正常"
    elif bmi < 28:
        status = "超重"
    else:
        status = "肥胖"
    return round(bmi, 2), status
# 调用函数
bmi, status = calculate_bmi(70, 1.75)
print(f"BMI: {bmi}, 状态: {status}")
关键要点总结:
- 声明: 使用 
def 函数名(参数): - 调用: 使用 
函数名(参数) - 返回值: 使用 
return语句 - 文档: 使用三引号添加文档字符串
 - 参数: 可以有位置参数、默认参数、可变参数等